/* ========================================================================= */
/* ------------------------------------------------------------------------- */
/*!
  \file			implmanager.cc
  \date			Aug 2012
  \author		TNick

  \brief		Contains the implementation of ImplManager class


*//*


 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Please read COPYING and README files in root folder
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* ------------------------------------------------------------------------- */
/* ========================================================================= */
//
//
//
//
/*  INCLUDES    ------------------------------------------------------------ */

#include	<dot-editor.h>

#include	<impl/implementations/implgvizlib.h>
#include	<impl/implementations/implprog.h>

#include	"implmanager.h"


/*  INCLUDES    ============================================================ */
//
//
//
//
/*  DEFINITIONS    --------------------------------------------------------- */


/*  DEFINITIONS    ========================================================= */
//
//
//
//
/*  DATA    ---------------------------------------------------------------- */

ImplManager *		ImplManager::uniq_ = NULL;

/*  DATA    ================================================================ */
//
//
//
//
/*  CLASS    --------------------------------------------------------------- */

/* ------------------------------------------------------------------------- */
ImplInterf *		kb__CreateProg					( void )
{
	return ImplProg::unique();
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
ImplInterf *		kb__CreateGViz					( void )
{
#ifdef	DE_WITH_GRAPHVIZ
	return ImplGVizLib::unique();
#else
	return NULL;
#endif
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
ImplManager::ImplManager	( void )
{
	Q_ASSERT( uniq_ == NULL );
	uniq_ = this;

	/* WARNING! the order here must match the order in ImplInterf::BIn */
	impl_lst_.append( kb__CreateProg );
	impl_lst_.append( kb__CreateGViz ); /* may be NULL */

}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
ImplManager::~ImplManager	( void )
{
	Q_ASSERT( uniq_ == this );
	uniq_ = NULL;
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
bool			ImplManager::init				( void )
{
	if ( uniq_ != NULL )
		return true;

	new	ImplManager();
	return true;
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
void			ImplManager::end				( void )
{
	if ( uniq_ == NULL )
		return;

	delete uniq_;

}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
bool			ImplManager::hasGViz			( void )
{
#	ifdef	DE_WITH_GRAPHVIZ
	return true;
#		else
	return false;
#	endif
}
/* ========================================================================= */


/*  CLASS    =============================================================== */
//
//
//
//
/* ------------------------------------------------------------------------- */
/* ========================================================================= */
